#for in 循环，图1：
#把乘法表左上角(1*1)考虑成（1，1）坐标点，每个乘法表达式是行*列
print('for in 循环方式：')
for row in range(1,10):
    for col in range(1,row+1):
        print('{}*{}={:<4}'.format(col,row,col*row),end='')
    print('')
print('='*80)

#for in 循环，图2：
#跟第一种方式类似，乘数row从9-1反向取值，被乘数col从1到row取值
for row in range(9,0,-1):
    for col in range(1,row+1):
        print('{}*{}={:<4}'.format(col,row,col*row),end='')
    print('')
print('=' * 80)

#for in循环，图3：
#行数从1-9取值，列数为行数值到1反向取值
#每一个表达式加上后面的两个空格总共占8个位置
#先输出空格，再输出表达式
for row in range(1,10):
    for col in range(9-row,0,-1):  # 打印空格
        print(' ' * 8, end='')
    for col in range(row,0,-1):    #打印表达式
        print('{}*{}={:<4}'.format(col,row,col*row),end='')
    print('')
print('=' * 80)

#for in 循环,图4:
for row in range(9,0,-1):
    for col in range(9-row,0,-1):  # 打印空格
        print(' ' * 8, end='')
    for col in range(row,0,-1):  #打印表达式
        print('{}*{}={:<4}'.format(col, row, col * row), end='')
    print('')
print('=' * 80)

print('while循环方式：')
i=1
while i<=9:
    j=1
    while j<=i:
        print('{}*{}={:<4}'.format(j,i,j * i), end='')
        j=j+1
    i=i+1
    print()
print('=' * 80)

#while 循环，图2：
#乘数i从9开始取值,被乘数j从1开始取值，但始终小于乘数
i=9
while i>=1:
    j=1
    while j<i:
        print('{}*{}={:<4}'.format(j, i, j * i), end='')
        j=j+1
    i=i-1
    print()
print('=' * 80)

#while 循环，图三：
#乘数i从1开始取值
i=1
while i<=9:
    j=9
    while j>0:
        if j<=i:
            print('{}*{}={:<4}'.format(j,i,j*i), end='')
        else:
            print(' '*8,end='')
        j=j-1
    i=i+1
    print('')
print('=' * 80)

#whil:e 循环，图四：
i=9
while i>0:
    j=9
    while j>0:
        if j<=i:
            print('{}*{}={:<4}'.format(j,i,j*i),end='')
        else:
            print(' '*8,end='')
        j=j-1
    i=i-1
    print()